/**
 * Description:该类主要用于创建一个输入框
 * Copyright: 成都和为科技有限公司 2012
 * 
 * 属性：
 * 	 type - 输入框类型 text | password
 *   text - 输入框默认值
 *   addon - 增加后缀
 */
function TextInput() {}

TextInput.inherit(Input);

/**
 * 初始化方法
 */
TextInput.prototype.init = function () {
	TextInput.base.init.call(this);
}

/**
 * 创建HTML节点
 */
TextInput.prototype.create = function () {
    this._html = document.createElement("div");
    var type = "text";
    if (this._attr.type) {
        type = this._attr.type;
    }
    if (this._attr.addon) {
        $(this._html).append("<div class='input-group'><input class='form-control' type='" + type + "'/><div class='input-group-addon'>" +
            "</div></div>");
        $(".input-group-addon", this._html).append($("#" + this._attr.addon, this.getParent().getHTML()));
    } else {
        $(this._html).append("<input class='form-control' type='" + type + "'/>");
    }

}

TextInput.prototype.initLoad = function() {
    TextInput.base.initLoad.call(this);
    var oInput = $("input",this._html);

    if (this._attr.describle) {
        oInput.attr("placeholder", this._attr.describle);
    }
    if (this._attr.text) {
        oInput[0].value = this._attr.text;
    }
    //解决IE8下disable不生效的问题
    if (this._attr.disabled == "true" || this._attr.disabled =="disabled") {
        this.setDisable();
    }
    
    if (this._attr.readonly == "true" || this._attr.readonly =="readonly") {
        this.setReadonly();
    }
	
    var othis = this;
    oInput.bind("focus", function(e){
        //IE8兼容性代码,一定要加在focus，否则堆栈溢出
        if(typeof(oInput.get(0).onpropertychange)=="object"&&oInput.get(0).onpropertychange!=null){
            oInput.bind("propertychange",function(e){
                if(event.propertyName == "value"){
                	if(othis._attr.lengthzero == "true"){
                		 othis.valuechange(e,othis._attr.lengthzero);
                	}else{
                		othis.valuechange(e);	
                	}
                }
            });
        }else{
            //注册一个文本内容改变事件
            oInput.bind("input",function(e){
            	if(othis._attr.lengthzero == "true"){
           		 othis.valuechange(e,othis._attr.lengthzero);
	           	}else{
	           		othis.valuechange(e);	
	           	}
            });
        }
        othis.focus(e);
    });
    oInput.bind("blur", function(e){
        //兼容性代码
        if(typeof(oInput.get(0).onpropertychange)=="object"){
            oInput.unbind("propertychange");
        }else{
            oInput.unbind("input");
        }
        othis.blur(e);
    });
}

/**
 * 自带认证方法。不能输入特殊符号
 * @param {} sValue
 * @return {Boolean}
 */
TextInput.prototype.validateControl = function(sValue) {
	//验证录入信息中不能有非法字符
	var specialSignal = new Array("'","%","_","&");
	for(var index=0 ; index < specialSignal.length ; index++){
		if(sValue.indexOf(specialSignal[index]) != -1){
			this.setValidate(false);
			this.setError("请不要录入单引号或者_，%，&等其他特殊符号！");
			return false;
		}	
	}
	if(sValue.indexOf("<") != -1 && sValue.indexOf(">") != -1 
		&& sValue.indexOf("/") == -1 && sValue.indexOf(";") == -1){
		this.setValidate(false);
		this.setError("请不要录入<>符号！");
		return false;
	}
	if(sValue == "null" || sValue == "NULL"){
		this.setValidate(false);
		this.setError("请不要录入null！");
		return false;
	}
	return true;
}

/**
 * 获取当前控件的值。需要提交到数据库
 */
TextInput.prototype.getValue = function(){
	if(!this.isValidate()){
		return "";
	}else{
		return $("input",this._html).val();
	}
}

/**
 * 设置当前控件的值。
 */
TextInput.prototype.setValue = function(value){
    TextInput.base.setValue.call(this);
	$("input",this._html).val(value);
}

/**
 * 设置为可编辑
 */
TextInput.prototype.setEnable = function(){
	TextInput.base.setEnable.call(this);
	$("input",this._html)[0].disabled = false;
	$(".input-group-addon",this._html).removeAttr("disabled");
}

/**
 * 设置为只读
 */
TextInput.prototype.setDisable = function(){
	TextInput.base.setDisable.call(this);
	$("input",this._html).attr("disabled",true);
	$(".input-group-addon",this._html).attr("disabled",true);
}

/**
 * 设置只读，但是可以点击
 */
TextInput.prototype.setReadonly = function(){
	TextInput.base.setReadonly.call(this);
	$("input",this._html).attr("readonly",true);
	$(".input-group-addon",this._html).attr("readonly",true);
}

/**
 * 设置为可编辑
 */
TextInput.prototype.setDisReadonly = function(){
	TextInput.base.setDisReadonly.call(this);
	$("input",this._html)[0].readonly = false;
	$(this._html).removeAttr("readonly");
}